/*******************************************************************************
 * ****** 页面框架脚本--定义通用变量, 方法 ********
 ******************************************************************************/
// 通用配置
server = {}
server.page = 1;// 默认选中页
server.pageSize = 20; // 默认返回量
server.showSize = 10;//中间页显示的数量
server.contextPath = '/cbj';

// 残疾证审核状态3个，和数据库表disabled_basic_info中is_validated对应，写在此变量中是便于前台统一管理和使用
server.cdpValidatedStatusNotyet = 'notyet';	// notyet - 暂未审核
server.cdpValidatedStatusYes = 'yes';	// yes - 通过校验
server.cdpValidatedStatusNo = 'no';	// no - 未通过校验

// 残疾证类型状态3个，和数据库表disability_certificate_type中id对应，写在此变量中是便于前台统一管理和使用
server.disabilityCertificateTypeCivilian = 'civilian';	// 平民/二代 残疾证
server.disabilityCertificateTypeActiveArmy = 'activeArmy';	// 现役军人残疾证
server.disabilityCertificateTypeRetiredArmy = 'retiredArmy';	// 退役军人残疾证

// 审核状态N个，和数据库表audit_status中id对应，写在此变量中是便于前台统一管理和使用， 数量根据需要变化
server.auditStatus11 = '11'; // 待申报
server.auditStatus21 = '21'; // 待初审
server.auditStatus22 = '22'; // 残联初审未通过



server.infoSuccess='';
server.infoFailure='';
server.infoError='操作发生错误, 请刷新页面重新尝试或者联系管理员进行解决.';
server.defaultNullValue='--';	// 列表中 如果值为空null时 显示的符号

//js获取项目根路径，如： http://localhost:8090/jobservice
server.getRootPath = function(){
    //获取当前网址，如： http://localhost:8083/jobservice/share/meun.jsp
    var curWwwPath=window.document.location.href;
    //获取主机地址之后的目录，如： jobservice/share/menu.jsp
    var pathName=window.document.location.pathname;
    var pos=curWwwPath.indexOf(pathName);
    //获取主机地址，如： http://localhost:8083
    var localhostPaht=curWwwPath.substring(0,pos);
    //获取带"/"的项目名，如：/jobservice
    var projectName=pathName.substring(0,pathName.substr(1).indexOf('/')+1);
    return(localhostPaht+projectName);
}

server.defaultDivPrintContainer='commonDivPrintContainer';	// 默认打印容器的id, 此div定义在index.jsp页面最底部
/**
 * 点击菜单, 加载右侧主体内容方法
 * url - 跳转页面url
 * obj - 被点击的菜单对象
 */ 
server.loadContentPage = function(url,obj) {
	//var amazeui='<script src="'+server.url+'/assets/amazeui-2.7.2/js/amazeui.js"></script>';
	//var app='<script  src="'+server.url+'/assets/amazeui-2.7.2/js/app.js"></script>';
	// 1-更改右侧页面内容
	$.ajax({
		url : server.contextPath + url,
		type : 'GET',
		success : function(data) {
			$(".page-body").html(data);
		//	$(".admin-content").append(amazeui);
		//	$(".admin-content").append(app);
		},
		dataType : 'html',
		async : true
	});
	// 2- 更改面包屑导航、每页的页面主体头部标题
	server.setPageTitleAndBreadcrumb(obj);
	
	// 2- 更改被点击a样式
	// 2-1 清除其他所有元素 被选中样式
	
//	$('.admin-sidebar-list li a').removeClass('choosen-item');
	// 2-2 添加本对象 被选中样式
//	$(obj).addClass('choosen-item');
}

// 将列表数据中被convertIdToName类样式修饰的字段替换成用户名, 而不是uuid
server.uuid2name=function(){
	var array=new Array();
	$(".convertIdToName").each(function(){
		var t=$(this).text();
		if(!verify.isNull(t)){
			array.push(t);
		}
	});
	if(array.length == 0){
		return;
	}
	$.ajax({
		url : server.contextPath +'/userPermission/user/getUserNameByMultiUserId',
		type : 'POST',
		data : {"userIdArray":array},
		success : function(data) {
			if(data.result){
				var userNameAndIdList = data.message;
				$(".convertIdToName").each(function(){
					var tmp = $(this).text();
					for(var i=0;i<userNameAndIdList.length;i++){
						if(tmp == userNameAndIdList[i].id){
							if(userNameAndIdList[i].userName == null || userNameAndIdList[i].userName == undefined){
								$(this).text(server.defaultNullValue);
							}else{
								$(this).text(userNameAndIdList[i].userName);
							}
						}
					}
				});
			}else{
				alert(data.message);
			}
		},
		dataType : 'json',
		async : false
	});
}

// 更改面包屑导航、每页的页面主体头部标题, obj- 被点击对象
server.setPageTitleAndBreadcrumb = function(obj){
//	alert(toString.call(obj));
//	alert(toString.call(obj) == toString.call('str'));
	// 1- 面包屑导航
	var lvl1Item = '',lvl2Item = '',lvl3Item = '';
	var breadcrumbContent = '<li><i class="fa fa-home"></i><a href="'+ server.contextPath +'/index">首页</a></li>';
	// 对obj为null或字符串时进行处理
	if((toString.call(obj) == toString.call(null)) || toString.call(obj) == toString.call('str')){
		if(toString.call(obj) == toString.call('str')){
			lvl1Item = '<li class="active">' + obj + '</li>';
		}
	}else{
		// 1- 1 查看是否是三级子菜单, 是的话获取父菜单(二级)内容
		if($(obj).parent().parent().parent().parent().attr('class') == 'submenu'){
			//  三级子菜单
			lvl1Item = '<li class="active">' + $(obj).parent().parent().parent().parent().prev().children('span').html() + '</li>';
			lvl2Item = '<li class="active">' + $(obj).parent().parent().prev().children().first().html() + '</li>';
			lvl3Item = '<li class="active">' + $(obj).children('span').html() + '</li>';
		}else{
			//  二级子菜单
			lvl1Item = '<li class="active">' + $(obj).parent().parent().prev().children('span').html() + '</li>';
			lvl2Item = '<li class="active">' + $(obj).children('span').html() + '</li>';
		}
	}
	breadcrumbContent += lvl1Item + lvl2Item + lvl3Item;
	$('.breadcrumb').html(breadcrumbContent);
	// 2- 页面主体头部标题
	$('.header-title').html($(obj).text());
}


/**
 * 
 * 通用加载列表数据方法
 * obj对象包含属性如下: 
 * url-请求后台list列表数据路径
 * 
 **/
server.ajaxLoadTableList = function(obj){
	// 1- 参数检查
	server.paginationImportParamsCheck(obj);
	// 2-异步请求
	$.ajax({
		url : obj.url,	//数据请求url路径
		type : 'POST',	
		data : obj.params,	// 传递的查询参数
		success : function(data) {
			if(!data.result){
				alert(data.message);
			}else{
				// 2-1 构建数据列表
				server.paginationDataTableBuild(obj,data.message);
				// 2-2 构建 分页显示, obj.paginationName 为 分页函数名, 如果一个页面只有一个分页时, 为null即可；多个时则需要传入具体的分页函数名哦
				server.paginationFootBuild(obj, data.message);
				// 2-3 替换其中的操作人id为操作人用户名
				server.uuid2name();
			}
		},
		error : function(){
			alert('请求发生异常.');
		},
		dataType : 'json',
		async : true
	});
}

/**
 * 必填项参数 相关校验, 供server.ajaxLoadList函数使用
 * obj-前台传递过来的对象
 */
server.paginationImportParamsCheck = function(obj){
	// 1- url校验
	if(verify.isNull(obj.url)){
		alert('url 未定义!');
		return;
	}
	// 2- table id和 页数div id 校验
	if(verify.isNull(obj.paginationTable)){
		alert('paginationTable 未定义!');
		return;
	}
	if(obj.columns == null || obj.columns.length < 1){
		alert('columns 未定义!');
		return;
	}
	// 页码, 如果没有传进来页码, 则使用 被选中（即当前页）, 如果没有被选中 则使用server.page的默认值
//	alert(obj.params.page);
	if(obj.params.page == null || obj.params.page < 1){
		var tmpPage = $('#'+obj.paginationFooter+' ul li.active a').html();
		if(tmpPage != null){
			obj.params.page = tmpPage;
		}else{
			obj.params.page = server.page;
		}
	}
	// 返回量如果没有传进来, 则使用server.pageSize的默认值
	if(obj.params.pageSize == null || obj.params.pageSize < 1){
		obj.params.pageSize = server.pageSize;
	}
//	alert(obj.params.page +' ||' + obj.params.pageSize);
	//  复选框 显示与否, 默认为不显示
	if(obj.checkbox == null){
		obj.checkbox = false;
	}
}

/**
 * 列表数据 显示 构建函数 供server.ajaxLoadList 函数使用
 * paginationTable--table id
 * columns 前台定义的要显示的数据列, [{},{}] 格式的
 * data 后台返回的数据列
 */
server.paginationDataTableBuild = function(obj, data){
	// 接收返回数据, 拼接成对应的html结构
	var totalColumns = obj.columns.length;	// 总列数
	var tableContent = '';
	// 1- thead 构建 列名
	tableContent += '<thead><tr>';
	// 检查复选框是否有赋值
	if(obj.checkbox){
		tableContent += '<th style="width:20px;"><div class="checkbox"><label><input type="checkbox" class="colored-blue" name="ckbAll" title="全选" onclick="server.ckbSelect(this,\'' + obj.paginationTable + '\');"><span class="text"></span></label></div></th>';// 复选框列
		totalColumns ++;
	}
	tableContent += '<th style="width:50px;">序号</th>';//序号列
	totalColumns++;
	$.each(obj.columns,function(index,item){
		tableContent += '<th ';
		//  如果有宽度属性, 则使用自定义的宽度
		if(item.width > 0){
			tableContent += 'style="width:'+item.width+'px;"';
		}
		tableContent += '>' + item.title + '</th>';
	});
	tableContent += '</tr></thead>';
	// 2- tbody 构建数据列表
	tableContent += '<tbody>'
	if(data.total == 0){
		tableContent += '<tr><td colspan="'+ totalColumns +'">没有查到匹配的数据, 换个查询条件再尝试一下?</td></tr>';
	}else{
		// 2-1 循环后台返回的数据列表, 来添加tbody中的tr
		$.each(data.list,function(index,item){
			// 2-1-1 循环前台定义个的多个列, 来添加tbody tr下的td
			tableContent += '<tr>';
			if(obj.checkbox){	//复选框列
				tableContent += '<td><div class="checkbox"><label><input type="checkbox" class="colored-blue" name="ckbItem" title="选中' + item.name + '进行删除" value="' + item.id + '" onclick="server.ckbSelect(this,\'' + obj.paginationTable + '\');"><span class="text"></span></label></div></td>';// 复选框列
			}
			tableContent += '<td>' + (data.startRow + index) + '</td>';	//序号列
			// 以下为对传进来的自定义对象 各个字段进行判断
			$.each(obj.columns,function(childIndex,childItem){
				// 一. 字段名和对应字段名的值
				var field = childItem.field;	// 字段名
				var value = server.defaultNullValue;	// 读取出来的的字段值
				// a- 如果传进来的字段名为  object.field 格式时, 则意味这为自定义对象,通过是否带有 . 来判断, 此时是要读取对象的属性值, 而不是直接传进来值
				if(field.indexOf('.') > 0){
//					var tmpObject = item[field.substring(0,field.indexOf('.'))];
//					if(tmpObject != null){
//						value = tmpObject[field.substring(field.indexOf('.')+1)];
//					}
					var filedsArray = field.split('.');
					switch(filedsArray.length){
					case 2:
						var subField = item[filedsArray[0]];
						value = subField[filedsArray[1]];
						break;
					case 3:
						var subField = item[filedsArray[0]];
						subField = subField[filedsArray[1]];
						value = subField[filedsArray[2]];
						break;
					}
				}else{
				// b- 非自定义对象
					if(item[field] != undefined && item[field] != null){
						// switch start
						switch(typeof(item[field])){
						case 'boolean':
							if(item[field]){
								value = '是';
							}else{
								value = '否';
							}
							break;
						case 'number':
							value = item[field];
							break;
						case 'string':
							value = item[field];
							break;
						default:
							// 其他的undefined, null, object, function等对象统统不予以处理, 因为那是方法使用者 参数给错啦!!!
							break;
						}
						// switch end
					}
					
				}
				// 二. 处理可能存在的formatter函数
				var specialTitle = value;
				if(childItem.formatter != null){
					// 参数①为当前字段值, 参数②为当前行的数据对象 
					// 为对象.属性 时
					if(field.indexOf('.') > 0){
						var tmpObject = item[field.substring(0,field.indexOf('.'))];
						if(tmpObject != null){
							value = childItem.formatter(tmpObject[field.substring(field.indexOf('.')+1)],item);
							specialTitle = tmpObject[field.substring(field.indexOf('.')+1)];
						}
					}else{
						// 为字段时
						value = childItem.formatter(item[field],item);
						specialTitle = item[field];
					}
				}
				tableContent += '<td title="'+specialTitle+'">' + value + '</td>';
			});
			tableContent += '</tr>';
		});
	}
	tableContent += '</tbody>'
	$('#'+obj.paginationTable).html(tableContent);
}

/**
 * 分页数 显示 构建函数 供server.ajaxLoadList 函数使用
 * paginationFooter 分页div id
 * paginationName 分页函数名, 适用于一个页面存在多个分页列表的情况
 * currentStartIndex: 当前显示数据的起始索引
 * currentEndIndex  :当前显示数据的结束索引
 * pageNum :当前页
 * totalPage:数据总页数
 * pageSize：每页返回数据量
 * total：数据总条数
 */
server.paginationFootBuild = function(obj,data){
	var paginationFooter = obj.paginationFooter;
	var pageNum = data.pageNum;	//当前页
	var totalPage = data.pages;	//总页数
	var showSize = server.showSize;
	var paginationName = '';
	if(verify.isNull(obj.paginationName)){
		paginationName = 'common.pagination';
	}else{
		paginationName = obj.paginationName;
	}
	// 1- 显示左下角显示项, 总条数等分页信息
	$('#'+paginationFooter+' .pagination-total-info').html('显示第 '+ data.startRow +' 至 '+ data.endRow +' 项结果，共 '+ data.total +' 项');
	//当前页数来判定，是属于哪一批次中的
	var patch = 0;
	if(data.pageNum % showSize==0){
		patch = pageNum/showSize;
	}else{
		patch = parseInt(pageNum/showSize)+1
	}
	var s = totalPage%showSize;
	
	// 处理右下角页码显示数据
	var pageContent = '';
	// 0-首页
	pageContent += '<li ';
	// 已经为第一页时 上页按钮 样式为“不可用”
	if(pageNum == 1 || pageNum == 0){
		pageContent += 'class="disabled"';
	}
	pageContent += '><a style="cursor:pointer;" href="javascript:void(0);" ';
	// 已经为第一页时 首页按钮 不添加点击事件
	if(pageNum > 1){
		pageContent += 'onclick="' + paginationName + '('+ 1 +')"';
	}
	pageContent += '>首页</a></li>';
	// 1-上页
	pageContent += '<li ';
	// 已经为第一页时 上页按钮 样式为“不可用”
	if(pageNum <= showSize){
		pageContent += 'class="disabled"';
	}
	pageContent += '><a style="cursor:pointer;" href="javascript:void(0);" ';
	// 已经为第一页时 上页按钮 不添加点击事件
//	alert(pageNum +' : '+ server.showSize);
	if(pageNum > showSize){
		pageContent += 'onclick="' + paginationName + '('+ (pageNum-showSize) +')"';
	}
	pageContent += '>&lt;&lt;</a></li>';
	// 2-中间页数
	if(patch > 0){
		for(var i=1;i<=showSize;i++){
			
			var n = (patch-1)*showSize +i;
			if(n<=totalPage){
				pageContent += '<li ';
				if(n == pageNum){
					pageContent += 'class="active" ';
				}
				pageContent += '><a style="cursor:pointer;" onclick="' + paginationName + '('+ n +')">'+ n +'</a>';
				pageContent += '</li>';
			}else{
				break;
			}
		}
	}
	// 3-下页按钮
	pageContent += '<li ';
	// 已经为最后一页时 下页按钮 样式为“不可用”
	if(((pageNum+s) > totalPage)){
		pageContent += 'class="disabled" ';
	}
	pageContent += '><a style="cursor:pointer;" href="javascript:void(0);" ';
	// 已经为最后一页时 下页按钮 不添加点击事件
	if((pageNum+showSize)<totalPage){
		pageContent += ' onclick="' + paginationName + '('+ (pageNum+showSize) +')"';
	}else{
		pageContent += ' onclick="' + paginationName + '('+ (totalPage) +')"';
	}
	pageContent += '>&gt;&gt;</a></li>';
	// 4-尾页
	pageContent += '<li ';
	// 已经为第一页时 上页按钮 样式为“不可用”
	if(pageNum >= totalPage){
		pageContent += 'class="disabled"';
	}
	pageContent += '><a style="cursor:pointer;" href="javascript:void(0);" ';
	// 已经为第一页时 上页按钮 不添加点击事件
	if(pageNum < totalPage){
		pageContent += 'onclick="' + paginationName + '('+ totalPage +')"';
	}
	pageContent += '>末页</a></li>';
	$('#'+paginationFooter+' .pagination').html(pageContent);
}


/**
 * 数据列第一列 复选框勾选动作
 * obj - 被点击的checkbox对象
 * tableId - 数据table id
 */ 
server.ckbSelect = function(obj, tableId) {
	var name = $(obj).attr('name');
	if ('ckbAll' == name) {
		// 1- 如果为全选复选框
		var isAllSelect = false;
		if ($(obj).prop('checked')) { // 全选
			//	alert($(".admin-content-body table tbody tr td input[name='ckbItem']").length);
			isAllSelect = true;
		} else { // 取消全选
			isAllSelect = false;
		}
		$("#" + tableId + " tbody tr td input[name='ckbItem']").each(function() {
			$(this).prop('checked', isAllSelect);
		});
	} else if ('ckbItem' == name) {
		// 2- 如果为列表中的复选框
		var ckbChecked = $("#" + tableId + " tbody tr td input[name='ckbItem']:checked").length;	//已经被选中行数的数量
		var ckbAllNum = $("#" + tableId + " tbody tr td input[name='ckbItem']").length;	// tbody中所有的行数
		// 2-1 如果选中数和总数相等  则 全选复选框被选中
		var isAllSelect = false;
		if(ckbAllNum == ckbChecked){
			isAllSelect = true;
		}else{
			isAllSelect = false;
		}
		$("#" + tableId + " thead tr th input[name='ckbAll']").prop('checked',isAllSelect);
	} else {
		alert('checkbox命名错误, 请联系管理员.');
	}

}

var dialog = new Object();
/**
 * 打开弹出页(get方法) - 没有自定义宽度则默认为1000px
 * url 向后台请求的路径, 不用加项目路径  格式为  '/manage/weixin/specialBuyer/add' 即可, 非空
 * title 弹出框的标题名; objectId-要编辑的对象id,如果为打开新建窗口则不用填
 */
server.openModalBox = function(url, title){
	$.ajax({
		url: server.contextPath + url,
		type:'get',
		data:{},	// 此处放参数
		dataType:'html',
		beforeSend: function(){
		},
		success:function(data){
			// body内容
			dialog = bootbox.dialog({
			    title : title,
			    message : data,
			    className:'',
			    boxCss:{'width':'1000px'}
			});
		},
		error:function(){
			alert('打开页面发生错误, 请刷新页面重新尝试或者联系管理员进行解决.');
		}
	});
}

/**
 * 打开弹出页(get方法) - 2 有自定义宽度
 * url 向后台请求的路径, 不用加项目路径  格式为  '/manage/weixin/specialBuyer/add' 即可, 非空
 * title 弹出框的标题名; objectId-要编辑的对象id,如果为打开新建窗口则不用填
 * width 弹出框大小 数字类型
 */
server.openModalBox = function(url, title,width){
	$.ajax({
		url: server.contextPath + url,
		type:'get',
		data:{},	// 此处放参数
		dataType:'html',
		beforeSend: function(){
		},
		success:function(data){
			// body内容
			dialog = bootbox.dialog({
			    title : title,
			    message : data,
			    className:'',
			    boxCss:{'width':width+'px'}
			});
		},
		error:function(){
			alert('打开页面发生错误, 请刷新页面重新尝试或者联系管理员进行解决.');
		}
	});
}
// 关闭弹出页, 暂时不指定modal容器的id
server.closeModalBox = function(){
	dialog.modal('hide');
//	dialog = null;
}

//关闭所有弹出框
server.closeAllModalBox = function(){
	bootbox.hideAll();
}

/**
 * 通用异步提交一个form表单方法, 一般用户新增或更新数据用
 * formId form表单id
 * url 表单提交后台后台对应接口
 * preCallback 提交前执行函数, 一般为校验函数
 * preCallbackParam 提交前执行函数参数, 暂时默认只有一个参数, 一般不用
 * suffixCallBack 提交后执行函数, 一般为校验函数
 * suffixCallBackParam 提交后执行函数参数, 暂时默认只有一个参数, 此函数后面可以跟任意多个回调函数(如果用不好或者看不懂回调函数的就不要调用)
 */
server.submitForm = function(formId, url, preCallback, preCallbackParam, suffixCallBack, suffixCallBackParam) {
	// 1- 执行 提交函数前的异步函数
	if (!preCallback(preCallbackParam)) {
		return false;
	}
	// 2- 异步提交
	$.ajax({
		url : server.contextPath + url,
		type : 'post',
		data : $('#' + formId).serialize(),
		dataType : 'json',
		beforeSend : function() {
		},
		success : function(data) {
			if (data.result) {
				alert('操作成功!');
				// 关闭可能存在的弹出窗口
				server.closeModalBox();
				// 执行回调函数
				suffixCallBack(suffixCallBackParam);
			} else {
				alert(data.message);
			}
		},
		error : function() {
			alert('操作发生错误, 请刷新页面重新尝试或者联系管理员进行解决.');
		}
	});
}

/**
 * 删除单条数据通用方法
 * objectId 数据id
 * url 删除功能后台对应接口, 不需要写项目根目录路径,  例如：/manage/weixin/specialBuyer/delete
 * callback 执行完删除后的回调函数
 * page 传入到回调函数callback的参数
 */
server.deleteObject = function(objectId, url,callback,param){
//	alert(objectId + ' : ' + url + ' : ' + callback + ' : ' + param);
	if (window.confirm('确定要删除此条信息吗? 此操作不可恢复!')) {
		$.ajax({
			url : server.contextPath + url,
			type : 'post',
			data : {
				'id' : objectId
			},
			dataType : 'json',
			success : function(data) {
				if (data.result) {
					alert('操作成功.');
					callback(param);
				} else {
					alert(data.message);
				}
			},
			error : function() {
				alert('操作发生错误, 请刷新页面重新尝试或者联系管理员进行解决.');
			}
		});
	}	
}

/**
 * 批量删除
 * deleteBatchUrl 批量删除功能后台对应接口, 不需要写项目根目录路径, 例如：/manage/weixin/specialBuyer/delete
 * callback 执行完删除后的回调函数
 * page 传入到回调函数callback的参数
 */
server.deleteBatch = function(deleteBatchUrl, callback, param) {
	// 1- 判断是否有被选中的
	var ckbChecked = $("#data-table tbody tr td input[name='ckbItem']:checked").length;
	if (ckbChecked < 1) {
		alert('没有选中任何项.');
		return;
	}
	// 2- 组装参数
	var idArray = new Array();
	$("#data-table tbody tr td input[name='ckbItem']:checked")
			.each(function() {
				idArray.push($(this).val());
			});
	if (!window.confirm('确实要删除此' + idArray.length + '项吗? 该操作不可恢复.')) {
		return;
	}
	// 3- 异步删除
	$.ajax({
		url : server.contextPath + deleteBatchUrl,
		type : 'post',
		data : {
			idArray : idArray
		},
		traditional : true,
		dataType : 'json',
		beforeSend : function() {
		},
		success : function(data) {
			if (data.result) {
				alert('操作成功!');
				// 使用回调函数刷新当前页
				callback(param);
			} else {
				alert(data.message);
			}
		},
		error : function() {
			alert('操作发生错误, 请刷新页面重新尝试或者联系管理员进行解决.');
		}
	});
}




/**
 * 通用下拉框选择改变事件
 * valueInputId - 真实值 控件, 该控件保存真实值
 * showBtnId - 显示值控件, 该控件显示显示值
 * realValue - 当前真实值
 * showValue - 当前显示值
 */ 
server.selectBoxChange = function(valueInputId, showBtnId, realValue, showValue){
	//给对应控件 赋真实值
	$('#'+valueInputId).val(realValue);
	//给对应控件 赋显示值
	$('#'+showBtnId).text(showValue);
}

/**
 * 地区下拉框联动事件
 * valueInputId - 真实值 控件id, 该控件保存真实值
 * showBtnId - 显示值控件id, 该控件显示显示值
 * realValue - 当前真实值
 * showValue - 当前显示值
 * childShowBtnId - 下级显示值控件 id
 * childShowValue - 下级显示控件 显示值
 * childUlId -  下级控件 用于加载子数据控件id
 */ 
server.selectAreaChange = function(valueInputId, showBtnId, realValue, showValue, childShowBtnId, childShowValue, childUlId){
	//给对应控件 赋真实值
	$('#'+valueInputId).val(realValue);
	//给对应控件 赋显示值
//	alert(showBtnId + ' : '  + showValue);
	$('#'+showBtnId).text(showValue);
	// 看是否有子项需要加载, 有的话再执行异步查询数据和给子项添加onchange点击赋值事件
	if(childUlId){
		$('#'+childShowBtnId).html(childShowValue);
		if(realValue.indexOf('10') == 0){
			$('#' + childUlId).empty();
			return;
		}
		$.ajax({
			url : server.contextPath + '/widget/getAreaChildren',
			type : 'post',
			data : {'parentId':realValue},
			dataType : 'json',
			beforeSend : function() {
			},
			success : function(data) {
				if (data.result) {
					// 下拉列表
					var lihtml = '';
					$.each(data.message,function(index,item){
						lihtml += '<li><a href="javascript:server.selectAreaChange(\''+valueInputId+'\',\''+childShowBtnId+'\',\''+item.id+'\',\''+item.name+'\',null,null,null);">'+item.name+'</a></li>';
					});
					$('#' + childUlId).html(lihtml);
					
				} else {
					alert(data.message);
				}
			},
			error : function(jqXHR,textStatus,errorThrown) {
				console.log(jqXHR);
				console.log(textStatus);
				console.log(errorThrown);
				alert('操作发生错误, 请刷新页面重新尝试或者联系管理员进行解决.');
			}
		});
	}
}

/**
 * 通用select下拉框onchange事件
 * valueInputId - 真实值 控件, 该控件保存真实值
 * showBtnId - 显示值控件, 该控件显示显示值
 * realValue - 当前真实值
 * showValue - 当前显示值
 * callback - 下拉框给对应控件赋值后执行的函数
 * callbackparam - 下拉框给对应控件赋值后执行的函数的参数
 */ 
server.selectBoxChange = function(valueInputId, showBtnId, realValue, showValue,callback,callbackparam){
	//给对应控件 赋真实值
	$('#'+valueInputId).val(realValue);
	//给对应控件 赋显示值
	$('#'+showBtnId).text(showValue);
//	alert(callbackparam);
	if(callback){
		callback(callbackparam);
	}
}

// 在新窗口中预览打印内容
server.printPreview = function(containerId){
	if(verify.isNull($('#'+containerId).html())){
		alert('请先选择一个要打印文书模板');
		return;
	}
	var newWindow = window.open();
	newWindow.window.document.body.innerHTML = $('#'+containerId).html();
	newWindow.window.document.head.innerHTML = window.document.head.innerHTML;
}
// 打印方法, 参数为装载打印内容容器的id
server.print = function(containerId){
	if(verify.isNull($('#'+containerId).html())){
		alert('请先选择一个要打印文书模板');
		return;
	}
	var newWindow = window.open();
	newWindow.window.document.body.innerHTML = $('#'+containerId).html();
	newWindow.window.document.head.innerHTML = window.document.head.innerHTML;
	newWindow.window.print();
}

// 初始化资源文件
server.serializeResourceFile = function(){
	$.ajax({
		url : server.contextPath + '/filegags/serialize',
		type : 'post',
		data : {},
		dataType : 'json',
		beforeSend : function() {
		},
		success : function(data) {
			if (data.result) {
				Notify(data.message, 'top-right', '5000', 'success', 'fa-check', true);
			} else {
				Notify('初始化文件失败', 'top-right', '5000', 'warning', 'fa-warning', true);
			}
		},
		error : function() {
			alert('操作发生错误, 请刷新页面重新尝试或者联系管理员进行解决.');
		}
	});
}

//下载文件, file可以为filegags的id或者filegags的fileName
/*server.downloadFile = function(fileId){
	$.ajax({
		url : server.contextPath + '/filegags/download',
		type : 'post',
		data : {
			fileId:fileId
		},
		dataType : 'json',
		beforeSend : function() {
		},
		success : function(data) {
			if (data.result) {
				//	window.open(data.message);
					try{ 
			            var elemIF = document.createElement("iframe");   
			            elemIF.src = data.message;   
			            elemIF.style.display = "none";   
			            document.body.appendChild(elemIF);   
			        }catch(e){ 
			 
			        }	
				var $eleForm = $("<form method='get'></form>");
	            $eleForm.attr("action",data.message);
	            $(document.body).append($eleForm);
	            //提交表单，实现下载
	            $eleForm.submit();
	            
			} else {
				alert(data.message);
			}
		},
		error : function() {
			alert('操作发生错误, 请刷新页面重新尝试或者联系管理员进行解决.');
		}
	});
}*/

server.downloadFile = function(fileId){
	var form=$("<form id='_fileForm'></form>");//定义一个form表单
	form.attr("style","display:none");
	form.attr("target","");
	form.attr("method","post");
	form.attr("action",server.contextPath + '/filegags/download');
	var input1=$("<input></input>");
	input1.attr("type","hidden");
	input1.attr("name","fileId");
	input1.attr("value",fileId);
	$("body").append(form);//将表单放置在web中
	form.append(input1);
	form.submit();//表单提交 
	//删除表单
	$("#_fileForm").remove();
}

// 校验用人单位各项方法
server.checkCompany = function(){
	var companyName = $('#companyName').val();
	if(verify.isNull(companyName)){
		$('#companyName').focus();
		$('#help-block-companyName').html('用人单位名称不能为空.');
		return false;
	}else{
		$('#help-block-companyName').html('');
	}
	
	var businessLicenseAddress = $('#businessLicenseAddress').val();
	if(verify.isNull(businessLicenseAddress)){
		$('#businessLicenseAddress').focus();
		$('#help-block-businessLicenseAddress').html('营业执照住所不能为空.');
		return false;
	}else{
		$('#help-block-businessLicenseAddress').html('');
	}
	// 用人单位类型
	var companyType = $('#companyType').val();
	if(verify.isNull(companyType)){
		$('#companyType').focus();
		alert('选择单位类型');
		$('#help-block-companyType').html('单位类型不能为空.');
		return false;
	}else{
		$('#help-block-companyType').html('');
	}
	// 所属地区
	var area = $('#area').val();
	if(verify.isNull(area) || area.substring(0,2) != '30'){
		$('#area').focus();
		alert('选择精确到县区级的所属地区，即营业执照颁发地区，此信息非常重要，一旦选定，以后不可更改，请慎重。');
		$('#help-block-area').html('选择精确到县区级的所属地区，即营业执照颁发地区，此信息非常重要，一旦选定，以后不可更改，请慎重。');
		return false;
	}else{
		$('#help-block-area').html('');
	}
	var unifiedSocialCreditCode = $('#unifiedSocialCreditCode').val();
	if(verify.isNull(unifiedSocialCreditCode)){
		$('#unifiedSocialCreditCode').focus();
		$('#help-block-unifiedSocialCreditCode').html('统一社会信用代码不能为空.');
		return false;
	}else{
		$('#help-block-unifiedSocialCreditCode').html('');
	}
	
	var unifiedSocialCreditFile = $('#unifiedSocialCreditFile').val();
	if(verify.isNull(unifiedSocialCreditFile)){
		$('#unifiedSocialCreditFile').focus();
		alert('上传营业执照副本扫描件');
		$('#help-block-unifiedSocialCreditFile').html('上传文件');
		return false;
	}else{
		$('#help-block-unifiedSocialCreditFile').html('');
	}
	
	var filePayRoll = $('#filePayRoll').val();
	if(verify.isNull(filePayRoll)){
		$('#filePayRoll').focus();
		alert('上传上年6月和12月工资花名册');
		$('#help-block-filePayRoll').html('上传文件');
		return false;
	}else{
		$('#help-block-filePayRoll').html('');
	}
	
	var fileWageSheet = $('#fileWageSheet').val();
	if(verify.isNull(fileWageSheet)){
		$('#fileWageSheet').focus();
		alert('上传上年6月和12月劳资报表');
		$('#help-block-fileWageSheet').html('上传文件');
		return false;
	}else{
		$('#help-block-fileWageSheet').html('');
	}
	
	var legalPerson = $('#legalPerson').val();
	if(!verify.isRealName(legalPerson)){
		$('#legalPerson').focus();
		$('#help-block-legalPerson').html('请输入格式正确的法人姓名.');
		return false;
	}else{
		$('#help-block-legalPerson').html('');
	}
	
	// 成立时间
	var establishmentDate = $('#establishmentDate').val();
	if(verify.isNull(establishmentDate)){
		$('#establishmentDate').focus();
		$('#help-block-establishmentDate').html('成立时间不能为空, 请选择成立时间.');
		return false;
	}else{
		$('#help-block-establishmentDate').html('');
	}
	
	// 单位电话
	var companyNumber = $('#companyNumber').val();
	if(!verify.isMobileOrPhone(companyNumber)){
		$('#companyNumber').focus();
		$('#help-block-companyNumber').html('请输入格式正确的座机号码.');
		return false;
	}else{
		$('#help-block-companyNumber').html('');
	}
	
	// 联系人
	var contactPerson = $('#contactPerson').val();
	if(!verify.isRealName(contactPerson)){
		$('#contactPerson').focus();
		$('#help-block-contactPerson').html('请输入格式正确的联系人.');
		return false;
	}else{
		$('#help-block-contactPerson').html('');
	}
	
	var contactNumber = $('#contactNumber').val();
	if(!verify.isMobileOrPhone(contactNumber)){
		$('#contactNumber').focus();
		$('#help-block-contactNumber').html('联系人电话格式不正确,手机号码或 区号-号码 的格式 .');
		return false;
	}else{
		$('#help-block-contactNumber').html('');
	}
	var companyNumber = $('#companyNumber').val();
	if(!verify.isNull(companyNumber)){
		if(!verify.isMobileOrPhone(companyNumber)){
			$('#companyNumber').focus();
			$('#help-block-companyNumber').html('单位电话格式不正确,手机号码或 区号-号码 的格式 .');
			return false;
		}else{
			$('#help-block-companyNumber').html('');
		}
	}else{
		$('#help-block-companyNumber').html('');
	}
	
	//邮编正则
	var postalCode = $('#postalCode').val();
	if(!verify.isNull(postalCode)){
		if(!verify.isPostalCode(postalCode)){
			$('#postalCode').focus();
			$('#help-block-postalCode').html('请输入正确的邮政编码.');
			return false;
		}else{
			$('#help-block-postalCode').html('');
		}
	}else{
		$('#help-block-postalCode').html('');
	}
	//传真
	var companyFax = $('#companyFax').val();
	if(!verify.isNull(companyFax)){
		if(!verify.isFax(companyFax)){
			$('#companyFax').focus();
			$('#help-block-companyFax').html('请输入正确的传真号码.');
			return false;
		}else{
			$('#help-block-companyFax').html('');
		}
	}else{
		$('#help-block-companyFax').html('');
	}
	//注册资本
	var registeredCapital = $('#registeredCapital').val();
	if(!verify.isNull(registeredCapital)){
		if(!verify.isPositiveDecimal2d(registeredCapital)){
			$('#registeredCapital').focus();
			$('#help-block-registeredCapital').html('请输入正整数或最多保留2位小数.');
			return false;
		}else{
			$('#help-block-registeredCapital').html('');
		}
	}else{
		$('#help-block-registeredCapital').html('');
	}
	return true;
}

// 前台校验残疾证、现役军人残疾证和退役军人残疾证格式, 格式正确返回true, 否则返回false
server.validateDisabilityCertificateNumberFormat = function(disabilityCertificateNumber){
	// 残疾证
	var regCanjizheng = /^[0-9]{14}[0-9a-zA-Z]{4}[1-7]{1}[1-4]{1}[bB]?[0-9]?/;
	// 现役军人残疾证
    var regJuncanzheng = /^[0-9]{4}[0-9]{2}[0-3][0-9][1-3][0-1][0-9][0-9]{2}[0-1][0-9][0-3][0-9][1-2][0-9]{4}$/;
    // 退役军人残疾证   例如：苏军S123456号
    // 对于退役残疾军人持有的新版《军人残疾证》编号由10位数字组成，其中第1位是省市汉字简称，第2位是残疾军人的“军”字，
    // 第3位是是户籍所在地区市、区简称的拼音字母代码，第4至9位是户籍所在地区市、区《残疾军人证》流水号，最后第10位是“号”字。
    // 第一个字校验的各省市简称， 顺序如下:京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼川贵云渝藏陕甘青宁新港澳台
    var regTuiyijuncanzheng = /^[\u4eac\u6d25\u5180\u664b\u8499\u8fbd\u5409\u9ed1\u6caa\u82cf\u6d59\u7696\u95fd\u8d63\u9c81\u8c6b\u9102\u6e58\u7ca4\u6842\u743c\u5ddd\u8d35\u4e91\u6e1d\u85cf\u9655\u7518\u9752\u5b81\u65b0\u6e2f\u6fb3\u53f0][\u519b][a-zA-Z][0-9]{6}[\u53f7]$/;
	var checkResult = false;
    if(regCanjizheng.test(disabilityCertificateNumber) || regJuncanzheng.test(disabilityCertificateNumber)||regTuiyijuncanzheng.test(disabilityCertificateNumber)){
    	checkResult  = true;
    }
//    alert(checkResult);
	return checkResult;
}

//前台校验身份证, 格式正确返回true, 否则返回false
server.validateIdentityCardNumberFormat = function(identityCardNumber){
	// 身份证
	var regIdentityCardNumber = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
	var checkResult = false;
    if(regIdentityCardNumber.test(identityCardNumber)){
    	checkResult  = true;
    }
//    alert(checkResult);
	return checkResult;
}
